package com.chen.controller;


import com.chen.pojo.Item;
import com.chen.pojo.ItemDesc;
import com.chen.service.ItemCatService;
import com.chen.service.ItemService;
import com.chen.vo.EasyUITable;
import com.chen.vo.EasyUITree;
import com.chen.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController  //返回JSON
@RequestMapping("/item")
public class ItemController {
    @Autowired
    private ItemService itemService;

    @Autowired
    private ItemCatService itemCatService;

    /**
     * 业务: 分页查询商品信息.
     * url:  http://localhost:9999/item/query?page=1&rows=20
     * 参数: page=1 页数  &rows=20  行数
     * 返回值: EasyUITable
     */
    @RequestMapping("/query")
    private EasyUITable findItemByPage(int page, int rows) {
        return itemService.findItemByPage(page, rows);
    }


    /**
     * 业务需求:	完成商品新增操作
     * url:	http://localhost:8091/item/save
     * 参数: 整个表单进行提交  使用对象接收
     * 返回值: 系统返回值对象
     */
    @RequestMapping("/save")
    public SysResult saveItem(Item item, ItemDesc itemDesc) {
        try {
            itemService.saveItem(item, itemDesc);
            return SysResult.success();
        } catch (Exception e) {
            e.printStackTrace();
            return SysResult.fail();
        }
    }

    /**
     * 实现商品编辑
     * url地址: /item/update
     * 请求参数: 整个form表单提交
     * 返回值:	sysResult对象
     */
    @RequestMapping("/update")
    public SysResult updateItem(Item item, ItemDesc itemDesc) {
        itemService.updateItem(item, itemDesc);
        return SysResult.success();
    }

    /**
     * 需求: 实现商品删除操作
     * url: http://localhost:8091/item/delete
     * 请求参数:  ids: 1474392029,1474392030
     * 返回值:  SysResult对象
     */
    @RequestMapping("/delete")
    public SysResult deleteItems(Long[] ids) {
        itemService.deleteItems(ids);
        return SysResult.success();
    }

    /*	手写 非MP方式
        String ids = request.getParameter("ids");
		String[] idsStr = ids.split(",");
		Long[]   idsLong = new Long[idsStr.length];
		for(int i=0;i<idsStr.length;i++){
			idsLong[i] = Long.parseLong(idsStr[i]);
		}
		idsLong*/


    /**
     * 实现商品上架/下架操作
     * url:/item/updateStatus/2
     * 参数: 1/2代表商品的状态, ids=100,101,102,103
     * 返回值: SysResult对象
     * SpringMVC框架: 参数接收说明 如果参数中间以逗号的形式分割
     * 则可以自动的转化为数组类型
     */
    @RequestMapping("/updateStatus/{status}")
    public SysResult updateStatus(@PathVariable Integer status, Long... ids) {
        itemService.updateStatus(ids, status);
        return SysResult.success();
    }


    /**
     * 业务说明: 根据商品Id号,检索商品详情信息
     * url:  http://localhost:8091/item/query/item/desc/1474392023
     * 参数:  result风格获取数据.
     * 返回值: SysResult对象
     */
    @RequestMapping("/query/item/desc/{itemId}")
    public SysResult findItemDescById(@PathVariable Long itemId) {
        ItemDesc itemDesc = itemService.findItemDescById(itemId);
        return SysResult.success(itemDesc);
    }


    /**
     * 业务需求: 实现商品分类树形结构展现
     * url地址:   http://localhost:8091/item/cat/list
     * 参数:      id= 父级节点的ID
     * 返回值:    List<EasyUITree>
     */
    @RequestMapping("/list")
    public List<EasyUITree> findItemCatList(Long id) {
        //暂时只查询一级商品分类信息
        long parentId = (id == null ? 0 : id);
        return itemCatService.findItemCatCache(parentId);
    }


}
